$(function(){
    function GetClientsDictionary(area_id, caller) {
		var area = $('#'+area_id);
		var vdiv = area_id+'Tab';

		area.html('<div id="'+vdiv+'Pager"></div><table id="'+vdiv+'"></table>');

        var pager = $('#' + vdiv + 'Pager');
        var gritab;
        var col_order = [0, 1, 2, 3, 4, 5, 6, 7];
        var col_names = ['ID', 'Название', 'Адрес', 'Телефон', 'Факс', 'Мобильный', 'E-Mail', 'Сайт WWW' ];
        var col_model = [
		    { name: 'id', index: 'cli_id', hidden: true, width: 50, editable: false, fixed: true },
		    { name: 'cli_name', index: 'cli_name', hidden: false, width: 150, editable: true, 
                    editoptions: { maxlength: "64", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Название</div>'}},
					
		    { name: 'cli_address', index: 'cli_address', hidden: false, width: 150, editable: true, 
                    editoptions: { maxlength: "128", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Адрес контрагента</div>'} },
					
		    { name: 'cli_phone', index: 'cli_phone', hidden: false, width: 90, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Телефон</div>'} },
					
		    { name: 'cli_fax', index: 'cli_fax', hidden: false, width: 90, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Факс</div>'} },
					
		    { name: 'cli_mobile', index: 'cli_mobile', hidden: false, width: 90, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Мобильный</div>'} },
					
		    { name: 'cli_mail', index: 'cli_mail', hidden: false, width: 100, editable: true, 
                    editoptions: { maxlength: "320", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">E-Mail</div>'} },
					
		    { name: 'cli_www', index: 'cli_www', hidden: false, width: 100, editable: true, 
                    editoptions: { maxlength: "320", style: "width:250px;"}, 
					formoptions: { label: '<div class="jqg-form-label">Сайт WWW</div>'} },
					
        ];
        var jqgo = {
            url: 'index.php',
            editurl: 'index.php',
            datatype: 'json',
            postData: { q: 'clients/index' },
            emptyrecords: true,
            autowidth: false,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 40,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: false,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 15,
            rowList: [15, 45, 150],
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: area.innerHeight() - 75,
            width: area.innerWidth() - 2,
            sortname: 'cli_name',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function (xhr, status, error) {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                switch( data.userdata.errcode ) {
                    case 0:
/*
                        if ($.browser.msie || $.browser.webkit) {
                            $('#' + vdiv + ' tr.jqgrow td').height(21);
                        }
*/
                        break;
                    case 999:    
                        alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                        break;
                    case 99:    
                        app.alert('AlertDlg', 'Ошибка', data.userdata.errmess, 'app-icon-stop32', caller.Close );
                        break;
                    default:
                        alert( data.userdata.errmess );
                        break;
                }                
            },
            ondblClickRow: function (id) {
                $('#' + vdiv).jqGrid('editGridRow', id,
                {
					width: 400,
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index,
					resize: false,
                    closeOnEscape: true,
                    savekey: [true, 13],
                    editData: { q: 'clients/update' },
                    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true
                }
                );
            }
        };
        // Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

        // Индикация ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
                if (rsp.errcode == '999') {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                }
            }
            return [success, msg];
        }

// Навигатор
        gritab.jqGrid('navGrid', '#' + vdiv + 'Pager',
// Параметры инструментов
        {
            add: true, addtext: 'Создать', 
			del: true, deltext: 'Удалить', 
			edit: true, edittext: 'Изменить', 
			view: true, viewtext: 'Просмотр', 
			search: false,
            refresh: true, refreshtext: 'Обновить', 
            afterRefresh: function () { gritab.resetSelection(); }
        },
// Параметры редактирования
        {
			width: 400,
            modal: true,
            jqModal: true,
            zIndex: app.jqgrid_form_min_z_index,
			resize: false,
            savekey: [true, 13],
            closeOnEscape: true,
            editData: { q: 'clients/update' },
            afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
            afterSubmit: responseOnSubmit,
            viewPagerButtons: false,
            closeAfterEdit: true
        },
// Параметры добавления
        {
			width: 400,
            modal: true,
            jqModal: true,
            zIndex: app.jqgrid_form_min_z_index,
			resize: false,
            savekey: [true, 13],
            closeOnEscape: true,
            editData: { q: 'clients/insert' },
            afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
            afterSubmit: responseOnSubmit
        },
// Параметры удаления
        {
            modal: true,
            jqModal: true,
            zIndex: app.jqgrid_form_min_z_index,
            width: 250,
			msg: '<table style="width:240px;margin-top:16px;"><tr><td style="width:50px;">'+
				'<div class="app-icon-quest32"></div></td><td>Удалить выбранную запись(и) ?</td></tr></table>',
			resize: false,
            closeOnEscape: true,
            delData: { q: 'clients/delete' },
            afterShowForm: function () {
                $('div#delmod' + vdiv).shadow();
            },
            afterSubmit: responseOnSubmit
        },
		null,
		{
			width: 400,
			resize: false,
            modal: true,
            jqModal: true,
            zIndex: app.jqgrid_form_min_z_index,
            closeOnEscape: true,
            viewPagerButtons: false,
			labelswidth: '35%'
        }
        );
        
        /*
        // Пользовательский навигатор - вкл/выкл. тулбар фильтра
        gritab.jqGrid('navButtonAdd', '#' + vdiv + 'Pager', {
        caption: '',
        title: 'Включить тулбар фильтра',
        buttonicon: 'ui-icon-search',
        onClickButton: function () {
        gritab.setGridParam({ filterbar: !gritab.getGridParam('filterbar') });
        gritab[0].toggleToolbar();
        }
        });
        */

// Делаем ширину панели кнопок максимальной
		$('td#'+area_id+'TabPager_center').width(2);
		
        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });

		this.Destroy = function() {
			gritab.GridDestroy(vdiv);
			area.find('*').remove();
		};
		this.Resize = function() {
			gritab.setGridWidth( area.innerWidth() - 2 );
			gritab.setGridHeight( area.innerHeight() - 75 );
		}

    };  // End of create function definition


    app.ShowClientsDictionary = function (dlgID) {
        var oTab;
        var aldlg = $('#' + dlgID);
		var me = this;

        if ($('#' + dlgID + 'Tab').length) return;

        aldlg.dialog(
        {
            modal: false, title: 'Справочник заказчиков',
            height: 452, width: 870,
			closeOnEscape: true,
            autoOpen: false,
            resizable: true,
			resize: function( e, ui ) { oTab.Resize(); },
            open: function () { 
				oTab = new GetClientsDictionary(dlgID, me);
				$('div[aria-describedby="' + dlgID + '"]').shadow() 
			},
            close: function () {
                if (oTab) oTab.Destroy();
                aldlg.dialog("destroy");
            }
        });

		this.Close = function() { aldlg.dialog('close'); };

        aldlg.dialog('open');
    }
});
